# 1. 数字类型的应用
# 整数（int）：学生ID、年龄
student_id = 1001  # 唯一标识，用整数便于计数和排序
age = 20  # 年龄是整数

# 浮点数（float）：成绩（带小数的分数）
math_score = 95.5  # 数学成绩
english_score = 88.0  # 英语成绩（整数也可存为float）

# 布尔值（bool）：是否通过考试（逻辑判断结果）
is_pass = math_score >= 60  # 数学是否及格（结果为True）

# 复数（complex）：特殊场景（如物理实验数据中的复数结果）
physics_experiment_data = 3.2 + 1.5j  # 假设某个实验的复数结果


# 2. 组合数据类型的应用
# 列表（list）：存储多门成绩（可动态添加/修改，有序）
scores = [math_score, english_score, 90.0]  # 数学、英语、语文成绩
scores.append(85.5)  # 新增化学成绩（列表可变，支持动态修改）

# 元组（tuple）：存储固定信息（如家庭住址，不可修改）
address = ("北京市", "海淀区", "中关村大街1号")  # 地址结构固定，用元组防止误改

# 字典（dict）：存储键值对信息（学生属性与值的映射，便于通过键查询）
student = {
    "id": student_id,  # 键为字符串，值为整数
    "name": "张三",    # 键为字符串，值为字符串
    "age": age,
    "scores": scores,  # 键为字符串，值为列表（嵌套使用）
    "address": address,  # 键为字符串，值为元组（嵌套使用）
    "is_pass": is_pass
}

# 集合（set）：存储选课列表（自动去重，适合无重复的无序集合）
courses = {"数学", "英语", "语文", "数学"}  # 重复的"数学"会被自动去重
courses.add("物理")  # 新增课程


# 3. 使用这些数据类型进行操作
print(f"学生ID：{student['id']}")  # 字典通过键查询值
print(f"姓名：{student['name']}，年龄：{student['age']}")
print(f"家庭住址：{address[0]}{address[1]}{address[2]}")  # 元组通过索引访问
print(f"所有成绩：{scores}，最高分：{max(scores)}")  # 列表支持max()等函数
print(f"是否通过所有考试：{student['is_pass']}")  # 布尔值用于判断
print(f"选修课程（去重后）：{courses}")  # 集合自动去重
print(f"物理实验数据：{physics_experiment_data}，实部：{physics_experiment_data.real}")  # 复数操作